#include "mondialogueeditionnoeud.h"
#include "ui_mondialogueeditionnoeud.h"

#include <iostream>
MonDialogueEditionNoeud::MonDialogueEditionNoeud(QWidget *parent, Noeud *noeud) :
    QDialog(parent),
    ui(new Ui::MonDialogueEditionNoeud)
{
    ui->setupUi(this);
    this->setFixedSize(this->size());
    this->noeud = noeud;
    this->initialiseChamps();
}

MonDialogueEditionNoeud::~MonDialogueEditionNoeud()
{
    delete ui;
}

//Rempli les champs de la fenetre en fonction du noeud courant
void MonDialogueEditionNoeud::initialiseChamps(){
    ui->nom->setText(this->noeud->getNom());
    ui->categorieComboBox->setCurrentIndex(this->noeud->getCategorie());
    this->noeud->remplirTypeComboBox(ui->typeComboBox, this->noeud->getCategorie());
    //si le noeud n'est pas une feuille on ne peut pas changer sa categorie
    if(!this->noeud->getFils().isEmpty())
    {
        ui ->categorieComboBox->setEnabled(false);
        ui->categorieComboBox->setStyleSheet
                ("background-color: rgb(200, 200, 200);");
    }
    else
    {
        ui->categorieComboBox->setEnabled(true);
        ui->categorieComboBox->setStyleSheet
                ("background-color: rgb(255, 255, 255)");
    }
    ui->typeComboBox->setCurrentIndex(this->noeud->getType());
    //si le champ type ne peut etre edite on change la couleur du champ
    if(ui->typeComboBox->count() == 1){
        ui->typeComboBox->setStyleSheet
                ("background-color: rgb(200, 200, 200);");
    }
    else
    {
        ui->typeComboBox->setStyleSheet
                ("background-color: rgb(255, 255, 255)");
    }
    ui->frequenceComboBox->setCurrentIndex(this->noeud->getFrequence());
    ui->description->setText(this->noeud->getDescription());
    ui->preCondition->setText(this->noeud->getPrecondition());
    ui->tempsMax->setText(this->noeud->getTempsMax());
    ui->tempsMin->setText(this->noeud->getTempsMin());
    ui->tempsMoy->setText(this->noeud->getTempsMoy());

    //si le noeud n'est pas une feuille on ne peut pas changer sa categorie
    if(!this->noeud->getFils().isEmpty())
    {
        ui->categorieComboBox->setEnabled(false);
    }
}

/*GETTERS **************************/
QString MonDialogueEditionNoeud::getNom()
{
    return ui->nom->text();
}

int MonDialogueEditionNoeud::getCategorie()
{
    return ui->categorieComboBox->currentIndex();
}

int MonDialogueEditionNoeud::getType()
{
    return ui->typeComboBox->currentIndex();
}

int MonDialogueEditionNoeud::getFrequence()
{
    return ui->frequenceComboBox->currentIndex();
}

QString MonDialogueEditionNoeud::getDescription()
{
    return ui->description->toPlainText();
}

QString MonDialogueEditionNoeud::getPrecondition()
{
    return ui->preCondition->text();
}

QString MonDialogueEditionNoeud::getTempsMax()
{
    return ui->tempsMax->text();
}

QString MonDialogueEditionNoeud::getTempsMin()
{
    return ui->tempsMin->text();
}

QString MonDialogueEditionNoeud::getTempsMoy()
{
    return ui->tempsMoy->text();
}

/* SLOTS*****************************/

void MonDialogueEditionNoeud::clear()
{
    this->initialiseChamps();
}

void MonDialogueEditionNoeud::categorieModified(){
    this->noeud->remplirTypeComboBox(ui->typeComboBox, ui->categorieComboBox->currentIndex());
    //si le champ type ne peut etre edite on change la couleur du champ
    if(ui->typeComboBox->count() == 1){
        ui->typeComboBox->setStyleSheet
                ("background-color: rgb(200, 200, 200);");
    }
    else
    {
        ui->typeComboBox->setStyleSheet
                ("background-color: rgb(255, 255, 255)");
    }
}

